﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace M2B.GestionEntretiens.DAL
{
    /// <summary>
    /// Cette interface décrit unit of work
    /// </summary>
    /// <remarks>
    /// Informations de l'interface: 
    /// <list type="bullet">
    /// <item name="authors">Auteur : M2B : Maher SAMMARI</item>
    /// <item name="creation date">Date de création : 01/04/2014</item>
    /// <item name="last modification">Date de dernière modification : 01/04/2014</item>
    /// </list>
    /// </remarks>
    public interface IUnitOfWork
    {
        /// <summary>
        /// C'est un exemple pour le test d'acheminement 
        /// TODO : A Enlever ;)
        /// </summary>
        string World { get; }
        /// <summary>
        /// Candidats repository
        /// </summary>
        CandidatsRepository CandidatsRepository
        {
            get;
        }
        /// <summary>
        /// Entretiens repository
        /// </summary>
        EntretiensRepository EntretiensRepository
        {
            get;
        }
        /// <summary>
        /// Questions repository
        /// </summary>
        QuestionsRepository QuestionsRepository
        {
            get;
        }
        /// <summary>
        /// Propositions repository
        /// </summary>
        PropositionsRepository PropositionsRepository
        {
            get;
        }
        /// <summary>
        /// Tests repository
        /// </summary>
        TestsRepository TestsRepository
        {
            get;
        }
        /// <summary>
        /// Referentiels Repository
        /// </summary>
        ReferentielsRepository ReferentielsRepository
        {
            get;
        }
        /// <summary>
        /// Test Questions Repository
        /// </summary>
        TestQuestionsRepository TestQuestionsRepository
        {
            get;
        }
        /// <summary>
        /// Reponse Repository
        /// </summary>
        ReponsesRepository ReponsensRepository
        {
            get;
        }

        #region Méthodes
        /// <summary>
        /// Commit du context
        /// </summary>
        void Commit();
        #endregion

    }
}
